home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.awt.geom.AffineTransform;
- import java.awt.geom.PathIterator;
- import java.util.Arrays;
- import sun.dc.path.PathConsumer;
- import sun.dc.path.PathException;
- import sun.dc.pr.PathDasher;
- import sun.dc.pr.PathStroker;
-
- public class BasicStroke implements Stroke {
- public static final int JOIN_MITER = 0;
- public static final int JOIN_ROUND = 1;
- public static final int JOIN_BEVEL = 2;
- public static final int CAP_BUTT = 0;
- public static final int CAP_ROUND = 1;
- public static final int CAP_SQUARE = 2;
- float width;
- int join;
- int cap;
- float miterlimit;
- float[] dash;
- float dash_phase;
- private static final int[] RasterizerCaps = new int[]{30, 10, 20};
- private static final int[] RasterizerCorners = new int[]{50, 10, 40};
-
- public BasicStroke(float var1, int var2, int var3, float var4, float[] var5, float var6) {
- if (var1 < 0.0F) {
- throw new IllegalArgumentException("negative width");
- } else if (var2 != 0 && var2 != 1 && var2 != 2) {
- throw new IllegalArgumentException("illegal end cap value");
- } else {
- if (var3 == 0) {
- if (var4 < 1.0F) {
- throw new IllegalArgumentException("miter limit < 1");
- }
- } else if (var3 != 1 && var3 != 2) {
- throw new IllegalArgumentException("illegal line join value");
- }
-
- if (var5 != null) {
- if (var6 < 0.0F) {
- throw new IllegalArgumentException("negative dash phase");
- }
-
- boolean var7 = true;
-
- for(int var8 = 0; var8 < var5.length; ++var8) {
- float var9 = var5[var8];
- if ((double)var9 > (double)0.0F) {
- var7 = false;
- } else if ((double)var9 < (double)0.0F) {
- throw new IllegalArgumentException("negative dash length");
- }
- }
-
- if (var7) {
- throw new IllegalArgumentException("dash lengths all zero");
- }
- }
-
- this.width = var1;
- this.cap = var2;
- this.join = var3;
- this.miterlimit = var4;
- if (var5 != null) {
- this.dash = (float[])(([F)var5).clone();
- }
-
- this.dash_phase = var6;
- }
- }
-
- public BasicStroke(float var1, int var2, int var3, float var4) {
- this(var1, var2, var3, var4, (float[])null, 0.0F);
- }
-
- public BasicStroke(float var1, int var2, int var3) {
- this(var1, var2, var3, 10.0F, (float[])null, 0.0F);
- }
-
- public BasicStroke(float var1) {
- this(var1, 2, 0, 10.0F, (float[])null, 0.0F);
- }
-
- public BasicStroke() {
- this(1.0F, 2, 0, 10.0F, (float[])null, 0.0F);
- }
-
- public Shape createStrokedShape(Shape var1) {
- FillAdapter var2 = new FillAdapter(this);
- PathStroker var3 = new PathStroker(var2);
- PathDasher var4 = null;
-
- try {
- var3.setPenDiameter(this.width);
- var3.setPenT4((float[])null);
- var3.setCaps(RasterizerCaps[this.cap]);
- var3.setCorners(RasterizerCorners[this.join], this.miterlimit);
- Object var5;
- if (this.dash != null) {
- var4 = new PathDasher(var3);
- var4.setDash(this.dash, this.dash_phase);
- var4.setDashT4((float[])null);
- var5 = var4;
- } else {
- var5 = var3;
- }
-
- this.feedConsumer((PathConsumer)var5, var1.getPathIterator((AffineTransform)null));
- } finally {
- var3.dispose();
- if (var4 != null) {
- var4.dispose();
- }
-
- }
-
- return var2.getShape();
- }
-
- private void feedConsumer(PathConsumer var1, PathIterator var2) {
- try {
- var1.beginPath();
- boolean var3 = false;
- float var4 = 0.0F;
- float var5 = 0.0F;
-
- for(float[] var6 = new float[6]; !var2.isDone(); var2.next()) {
- int var7 = var2.currentSegment(var6);
- if (var3) {
- var3 = false;
- if (var7 != 0) {
- var1.beginSubpath(var4, var5);
- }
- }
-
- switch (var7) {
- case 0:
- var4 = var6[0];
- var5 = var6[1];
- var1.beginSubpath(var6[0], var6[1]);
- break;
- case 1:
- var1.appendLine(var6[0], var6[1]);
- break;
- case 2:
- var1.appendQuadratic(var6[0], var6[1], var6[2], var6[3]);
- break;
- case 3:
- var1.appendCubic(var6[0], var6[1], var6[2], var6[3], var6[4], var6[5]);
- break;
- case 4:
- var1.closedSubpath();
- var3 = true;
- }
- }
-
- var1.endPath();
- } catch (PathException var8) {
- throw new InternalError("Unable to Stroke shape (" + var8.getMessage() + ")");
- }
- }
-
- public float getLineWidth() {
- return this.width;
- }
-
- public int getEndCap() {
- return this.cap;
- }
-
- public int getLineJoin() {
- return this.join;
- }
-
- public float getMiterLimit() {
- return this.miterlimit;
- }
-
- public float[] getDashArray() {
- return this.dash == null ? null : (float[])((float[])this.dash.clone());
- }
-
- public float getDashPhase() {
- return this.dash_phase;
- }
-
- public int hashCode() {
- int var1 = Float.floatToIntBits(this.width);
- var1 = var1 * 31 + this.join;
- var1 = var1 * 31 + this.cap;
- var1 = var1 * 31 + Float.floatToIntBits(this.miterlimit);
- if (this.dash != null) {
- var1 = var1 * 31 + Float.floatToIntBits(this.dash_phase);
-
- for(int var2 = 0; var2 < this.dash.length; ++var2) {
- var1 = var1 * 31 + Float.floatToIntBits(this.dash[var2]);
- }
- }
-
- return var1;
- }
-
- public boolean equals(Object var1) {
- if (!(var1 instanceof BasicStroke)) {
- return false;
- } else {
- BasicStroke var2 = (BasicStroke)var1;
- if (this.width != var2.width) {
- return false;
- } else if (this.join != var2.join) {
- return false;
- } else if (this.cap != var2.cap) {
- return false;
- } else if (this.miterlimit != var2.miterlimit) {
- return false;
- } else {
- if (this.dash != null) {
- if (this.dash_phase != var2.dash_phase) {
- return false;
- }
-
- if (!Arrays.equals(this.dash, var2.dash)) {
- return false;
- }
- } else if (var2.dash != null) {
- return false;
- }
-
- return true;
- }
- }
- }
- }
-